home *** CD-ROM | disk | FTP | other *** search
/ The Arsenal Files 8 / The Arsenal Files Collection #8 (Arsenal Computer) (1996).ISO / pcboard / callm120.zip / CALLME.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-09-30  |  10KB  |  315 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.2O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Integer  INTEGER001
  21.     Integer  INTEGER002
  22.     Integer  INTEGER003
  23.     Integer  TINTEGER004(99)
  24.     Integer  INTEGER005
  25.     Integer  INTEGER006
  26.     Integer  INTEGER007
  27.     Integer  INTEGER008
  28.     String   STRING001
  29.     String   STRING002
  30.     String   STRING003
  31.     String   STRING004
  32.     String   STRING005
  33.     String   STRING006
  34.     String   STRING007
  35.     String   TSTRING008(7)
  36.     String   STRING009
  37.     String   STRING010
  38.     String   STRING011
  39.     String   STRING012
  40.     String   STRING013
  41.     String   STRING014
  42.     String   STRING015
  43.  
  44. ;------------------------------------------------------------------------------
  45.  
  46.     Cls
  47.     GetUser
  48.     If (MinLeft() < "5") Then
  49.         PrintLn "@X10┌────────────────────────────────────────────────────────────────────────────@X19┐@X0F"
  50.         PrintLn "@X10│ @X1CWe are sorry but you need at least 5 minutes left to run this door and you @X19│@X0F"
  51.         PrintLn "@X10│ @X1Conly have   minute(s) left.  Please try this door when you have more time. @X19│@X0F"
  52.         PrintLn "@X10└@X19────────────────────────────────────────────────────────────────────────────┘@X0F"
  53.         AnsiPos 13, 3
  54.         Print "@X71@X0F", MinLeft()
  55.         Newlines 2
  56.         End
  57.     Endif
  58.     FOpen 1, PPEPath() + PPEName() + ".CFG", 0, 0
  59.     For INTEGER002 = 1 To 7
  60.         FGet 1, TSTRING008(INTEGER002)
  61.     Next
  62.     FClose 1
  63.     For INTEGER002 = 1 To 7
  64.         TSTRING008(INTEGER002) = RTrim(Left(TSTRING008(INTEGER002), 23), " ")
  65.     Next
  66.     STRING009 = TSTRING008(1) + TSTRING008(2)
  67.     STRING009 = Strip(STRING009, " ")
  68.     For INTEGER003 = 1 To Len(STRING009)
  69.         TINTEGER004(INTEGER003) = Asc(Mid(STRING009, INTEGER003, 1))
  70.     Next
  71.     INTEGER005 = TINTEGER004(1) + TINTEGER004(2) + TINTEGER004(3) + TINTEGER004(4) + TINTEGER004(5) + TINTEGER004(6) + TINTEGER004(7) + TINTEGER004(8) + TINTEGER004(9) + TINTEGER004(10) + TINTEGER004(11) + TINTEGER004(12) + TINTEGER004(13) + TINTEGER004(14) + TINTEGER004(15) + TINTEGER004(16) + TINTEGER004(17) + TINTEGER004(18) + TINTEGER004(19) + TINTEGER004(20) + TINTEGER004(21) + TINTEGER004(22) + TINTEGER004(23) + TINTEGER004(24) + TINTEGER004(25) + TINTEGER004(26) + TINTEGER004(27) + TINTEGER004(28) + TINTEGER004(29) + TINTEGER004(30) + TINTEGER004(31) + TINTEGER004(32) + TINTEGER004(33) + TINTEGER004(34) + TINTEGER004(35) + TINTEGER004(36) + TINTEGER004(37) + TINTEGER004(38) + TINTEGER004(39) + TINTEGER004(40) + TINTEGER004(41) + TINTEGER004(42) + TINTEGER004(43) + TINTEGER004(44) + TINTEGER004(45) + TINTEGER004(46) + TINTEGER004(47) + TINTEGER004(48) + TINTEGER004(49) + TINTEGER004(50) + TINTEGER004(51) + TINTEGER004(52) + TINTEGER004(53) + TINTEGER004(54) + TINTEGER004(55) + TINTEGER004(56) + TINTEGER004(57) + TINTEGER004(58) + TINTEGER004(59) + TINTEGER004(60) + TINTEGER004(61) + TINTEGER004(62) + TINTEGER004(63) + TINTEGER004(64) + TINTEGER004(65) + TINTEGER004(66) + TINTEGER004(67) + TINTEGER004(68) + TINTEGER004(69) + TINTEGER004(70) + TINTEGER004(71) + TINTEGER004(72) + TINTEGER004(73) + TINTEGER004(74) + TINTEGER004(75) + TINTEGER004(76) + TINTEGER004(77) + TINTEGER004(78) + TINTEGER004(79) + TINTEGER004(80)
  72.     INTEGER006 = INTEGER005 * 952
  73.     If (INTEGER006 == TSTRING008(3)) STRING010 = "YES"
  74.     Log "CallMe Entered at -> " + STRING012, 0
  75.     Cls
  76.     Newlines 5
  77.     PrintLn ""
  78.     PrintLn ""
  79.     PrintLn "          @X09┌─────┐ ┌──────┐ ┌─┐    ┌─┐           ┌───────┐ ┌─────┐"
  80.     PrintLn "          │ ┌─┐ │ │ ┌──┐ │ │ │    │ │           │ ┌┐ ┌┐ │ │ ┌───┘"
  81.     PrintLn "          │ │ └─┘ │ └──┘ │ │ │    │ │    ┌────┐ │ ││ ││ │ │ └─┐  "
  82.     PrintLn "          │ │ ┌─┐ │ ┌──┐ │ │ │    │ │    └────┘ │ │└─┘│ │ │ ┌─┘  "
  83.     PrintLn "          │ └─┘ │ │ │  │ │ │ └──┐ │ └──┐        │ │   │ │ │ └───┐"
  84.     PrintLn "          └─────┘ └─┘  └─┘ └────┘ └────┘        └─┘   └─┘ └─────┘"
  85.     PrintLn ""
  86.     PrintLn "                                  @X09v1.20"
  87.     PrintLn ""
  88.     PrintLn "                  @X0C(c)1996 Practical Computer Services@X0F"
  89.     Delay (3 * 182) / 10
  90.     If (Upper(TSTRING008(7)) == "NONE") Goto LABEL001
  91.     Cls
  92.     PrintLn "@X10┌────────────────────────────────────────────────────────────────────────────@X19┐@X0F"
  93.     PrintLn "@X10│ @X1BPlease enter the password for access to CallMe ->                          @X19│@X0F"
  94.     PrintLn "@X10└@X19────────────────────────────────────────────────────────────────────────────┘@X0F"
  95.     AnsiPos 53, 2
  96.     InputStr "@X1B_", STRING007, 26, 13, Mask_Ascii(), 0
  97.     If (Upper(STRING007) == Upper(TSTRING008(7))) Goto LABEL001
  98.     Newlines 2
  99.     PrintLn "@X10┌────────────────────────────────────────────────────────────────────────────@X19┐@X0F"
  100.     PrintLn "@X10│ @X1CWe are sorry, you have entered an incorrect password, access denied.       @X19│@X0F"
  101.     PrintLn "@X10└@X19────────────────────────────────────────────────────────────────────────────┘@X0F"
  102.     Delay (5 * 182) / 10
  103.     End
  104.     :LABEL001
  105.     STRING006 = Len(TSTRING008(5))
  106.     STRING015 = Len(TSTRING008(4))
  107.     STRING005 = STRING006 - STRING015 - 2
  108.     BOOLEAN001 = 0
  109.     STRING002 = TSTRING008(6)
  110.     STRING003 = Chr(13)
  111.     :LABEL002
  112.     Cls
  113.     PrintLn "@X10┌───────────────────────────────────────────────────────────────────────────@X19┐@X0F"
  114.     PrintLn "@X10│ @X1Ev1.20    @X1ACALL-ME - The Call Back Utility       @X1E(c)1996 Practical Computer @X19│@X0F"
  115.     PrintLn "@X10└@X19───────────────────────────────────────────────────────────────────────────┘@X0F"
  116.     PrintLn "@X10┌───────────────────────────────────────────────────────────────────────────@X19┐@X0F"
  117.     PrintLn "@X10│ @X1BThis program allows us to call you back.   There are many reasons why we  @X19│@X0F"
  118.     PrintLn "@X10│ @X1Bwould want to do this, one is that it is a local call for us to call you, @X19│@X0F"
  119.     PrintLn "@X10│ @X1Bor another one is that we require absolute security, another is that we   @X19│@X0F"
  120.     PrintLn "@X10│ @X1Bare great people.  This is very easy to complete, you will be asked for   @X19│@X0F"
  121.     PrintLn "@X10│ @X1Byour phone number, please enter it in the format of @X1EXXX-XXX-XXXX@X1B.  Then   @X19│@X0F"
  122.     PrintLn "@X10│ @X1Bwe will drop carrier, and give you a callback.    When you see the word   @X19│@X0F"
  123.     PrintLn "@X10│ @X1B@X1ERING@X1B appear on your screen,  you will need to type @X1CATA @X1B(then the enter    @X19│@X0F"
  124.     PrintLn "@X10│ @X1Bkey).  After that, there will be a slight pause, maybe 10 to 15 seconds   @X19│@X0F"
  125.     PrintLn "@X10│ @X1Bafter that, you will be back on the BBS!  Have a good time.               @X19│@X0F"
  126.     PrintLn "@X10└@X19───────────────────────────────────────────────────────────────────────────@X19┘@X0F"
  127.     Newline
  128.     STRING011 = "Y"
  129.     InputYN "  Do you wish to continue with the Call Back (Y/n)@X0A ", STRING011, 10
  130.     Newline
  131.     If (Upper(STRING011) == "N") Then
  132.         STRING012 = Time()
  133.         Log "Voluntary CallMe exit at -> " + STRING012, 0
  134.         End
  135.     Endif
  136.     If (U_BDPhone == "             ") Goto LABEL003
  137.     STRING013 = "Y"
  138.     PrintLn ""
  139.     Print "  @X0C", U_BDPhone
  140.     InputYN " @X0A <--- Is this number correct (Y/n) ", STRING011, 10
  141.     If (Upper(STRING011) == "Y") Then
  142.         STRING014 = U_BDPhone
  143.     Endif
  144.     If (Upper(STRING011) == "Y") Goto LABEL004
  145.     :LABEL003
  146.     Newlines 2
  147.     InputStr "  @X0AEnter the number we can call you back at (ex " + TSTRING008(5) + ")", STRING014, 10, 14, "0123456789-", 0
  148.     If (STRING014 == 0) Goto LABEL002
  149.     If (Len(STRING014) < Len(TSTRING008(5))) Goto LABEL002
  150.     :LABEL004
  151.     STRING014 = Strip(STRING014, "-")
  152.     STRING014 = Strip(STRING014, " ")
  153.     STRING014 = Strip(STRING014, "(")
  154.     STRING014 = Strip(STRING014, ")")
  155.     If (Left(STRING014, STRING015) == TSTRING008(4)) Then
  156.         STRING014 = Right(STRING014, STRING005)
  157.         Goto LABEL005
  158.     Endif
  159.     :LABEL005
  160.     Newlines 2
  161.     PrintLn "@X10┌────────────────────────────────────────────────────────────────────────────@X19┐@X0F"
  162.     PrintLn "@X10│ @X1BHere we go, remember when you see the word @X1CRING @X1Byou need to type @X1CATA@X1B & tap @X19│@X0F"
  163.     PrintLn "@X10│ @X1Bthe enter key.  @X1DRelax, it will work!                                       @X19│@X0F"
  164.     PrintLn "@X10└@X19────────────────────────────────────────────────────────────────────────────┘@X0F"
  165.     CdChkOff
  166.     DtrOff
  167.     KbdChkOff
  168.     Delay 3
  169.     DtrOn
  170.     Delay 1
  171.     STRING001 = STRING002 + STRING014 + STRING003
  172.     WaitFor "CONNECT", BOOLEAN001, 1
  173.     For INTEGER001 = 1 To 3
  174.         SendModem STRING001
  175.         WaitFor "CONNECT", BOOLEAN001, 40
  176.         If (BOOLEAN001) Goto LABEL006
  177.     Next
  178.     STRING004 = "Unsuccessful (No answer/connect)"
  179.     Goto LABEL007
  180.     :LABEL006
  181.     KbdChkOn
  182.     CdChkOn
  183.     Cls
  184.     StartDisp 1
  185.     PrintLn 
  186.     PrintLn "@X02@BOARDNAME:76C@@POS:79@@POFF@"
  187.     PrintLn "@X10┌────────────────────────────────────────────────────────────────────────────@X19┐@X0F"
  188.     PrintLn "@X10│ @X1EYou have been called back. Enjoy the BBS!                                  @X19│@X0F"
  189.     PrintLn "@X10└@X19────────────────────────────────────────────────────────────────────────────┘@X0F"
  190.     For INTEGER007 = 4 To 0 Step -1
  191.         AnsiPos 50, 4
  192.         PrintLn "@X1BPlease wait for ", INTEGER007, " seconds@X0F"
  193.         Delay (1 * 182) / 10
  194.     Next
  195.     AnsiPos 50, 4
  196.     PrintLn "@X1BThanks for Using CallMe(tm) @X19│@X0F"
  197.     KeyFlush
  198.     STRING004 = "SUCCESSFUL"
  199.     :LABEL007
  200.     If (STRING010 <> "YES") Then
  201.         INTEGER008 = MinLeft() - 5
  202.         AdjTime -INTEGER008
  203.         PrintLn ""
  204.         PrintLn "@X70┌────────────────────────────────────────────────────────────────────────────@X7F┐@X0F"
  205.         PrintLn "@X70│ @X71Please help your SysOp register this program, Registration will remove the @X7F│@X0F"
  206.         PrintLn "@X70│ @X71@X745 minute time limit@X71, and remove this annoying message.   Since your SysOp  @X7F│@X0F"
  207.         PrintLn "@X70│ @X71thinks enough of you to allow you to be called back, why not help him out  @X7F│@X0F"
  208.         PrintLn "@X70│ @X71by sending him a check for the @X7A$10.00 @X71registration fee?                    @X7F│@X0F"
  209.         PrintLn "@X70└@X7F────────────────────────────────────────────────────────────────────────────┘@X0F"
  210.     Endif
  211.     Log "CALLBACK " + STRING004 + " to " + STRING014 + " at " + String(Time()), 0
  212.     Newlines 2
  213.     End
  214.     PrintLn "Reg # 00000000"
  215.  
  216. ;------------------------------------------------------------------------------
  217. ;
  218. ; Usage report (before postprocessing)
  219. ;
  220. ; ■ Statements used :
  221. ;
  222. ;    4       End
  223. ;    5       Cls
  224. ;    24      Goto 
  225. ;    36      Let 
  226. ;    2       Print 
  227. ;    56      PrintLn 
  228. ;    18      If 
  229. ;    1       FOpen 
  230. ;    1       FClose 
  231. ;    1       FGet 
  232. ;    1       StartDisp 
  233. ;    1       GetUser
  234. ;    1       AdjTime 
  235. ;    3       Log 
  236. ;    2       InputStr 
  237. ;    2       InputYN 
  238. ;    1       DtrOn
  239. ;    1       DtrOff
  240. ;    1       CdChkOn
  241. ;    1       CdChkOff
  242. ;    5       Delay 
  243. ;    1       SendModem 
  244. ;    2       Newline
  245. ;    6       Newlines 
  246. ;    2       WaitFor 
  247. ;    1       KbdChkOn
  248. ;    1       KbdChkOff
  249. ;    4       AnsiPos 
  250. ;    1       KeyFlush
  251. ;
  252. ;
  253. ; ■ Functions used :
  254. ;
  255. ;    4       -
  256. ;    4       *
  257. ;    3       /
  258. ;    98      +
  259. ;    3       -
  260. ;    9       ==
  261. ;    1       <>
  262. ;    7       <
  263. ;    5       <=
  264. ;    10      >=
  265. ;    10      !
  266. ;    10      &&
  267. ;    5       ||
  268. ;    6       Len(
  269. ;    6       Upper()
  270. ;    1       Mid()
  271. ;    2       Left()
  272. ;    1       Right()
  273. ;    1       Chr()
  274. ;    1       Asc()
  275. ;    1       RTrim()
  276. ;    2       Time()
  277. ;    5       Strip()
  278. ;    1       String()
  279. ;    1       Mask_Ascii()
  280. ;    1       PPEPath()
  281. ;    3       MinLeft()
  282. ;    1       PPEName()
  283. ;
  284. ;------------------------------------------------------------------------------
  285. ;
  286. ; Analysis flags : ABM
  287. ;
  288. ; A - Adjust online time remaining ■ 5
  289. ;     Program modify the amount of online time remaining, this may
  290. ;     be a way to bypass time limits
  291. ;     ■ Search for : ADJTIME
  292. ;
  293. ; B - Brute hangup ■ 1
  294. ;     Program hangup without notification. This may be a good way to
  295. ;     disconnect a user, but if used randomly, may be very nasty
  296. ;     ■ Search for : HANGUP, DTROFF
  297. ;
  298. ; M - Send text to modem only ■ 4
  299. ;     Some informations are sent only to the modem, not to the local
  300. ;     screen, this is a well known way to make stealth backdoors, Check!
  301. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  302. ;
  303. ;------------------------------------------------------------------------------
  304. ;
  305. ; Postprocessing report
  306. ;
  307. ;    5       For/Next
  308. ;    0       While/EndWhile
  309. ;    5       If/Then or If/Then/Else
  310. ;    0       Select Case
  311. ;
  312. ;------------------------------------------------------------------------------
  313. ;                 AEGiS Corp - Break the routines, code against the machines!
  314. ;------------------------------------------------------------------------------
  315.